home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 2
/
Gold Medal Software Volume 2 (Gold Medal) (1994).iso
/
windows
/
win31
/
macsyma.arj
/
MACSDEMO.EXE
/
DIFFER.OUT
< prev
next >
Wrap
Text File
|
1993-09-11
|
7KB
|
117 lines
(c1) /* Demonstration of Difference Equation Package DIFFER
*/
if get('differ,'version)=false then load(differ)$
C:\MACSD2B\share\DIFFER.fas being loaded.
C:\MACSD2B\share\JORDAN_F.fas being loaded.
C:\MACSD2B\share\jordanl.fas being loaded.
C:\MACSD2B\share\powers.fas being loaded.
(c2) /* First Order Equations */
f[n+1]=f[n];
|$label(0,15,Times New Roman,$(d2$))$sub(f,n$in( + )1)$hinge()$in( = )$sub(f,n)
(c3) /* The function to use is DIFFERENCEQ. */
differenceq(%,f[n]);
|$label(0,15,Times New Roman,$(d3$))$sub(f,n)$hinge()$in( = )$sub(f,0)
(c4) g[0]:1$
(c5) g[n+1]=2*g[n];
|$label(0,15,Times New Roman,$(d5$))$sub(g,n$in( + )1)$hinge()$in( = )2$hinge()$in( )$sub(g,n)
(c6) differenceq(%,g[n]);
|$label(0,15,Times New Roman,$(d6$))$sub(g,n)$hinge()$in( = )$sup(2,n)
(c7) h[n+1]=3*h[n]+2;
|$label(0,15,Times New Roman,$(d7$))$sub(h,n$in( + )1)$hinge()$in( = )3$in( )$sub(h,n)$hinge()$in( + )2
(c8) differenceq(%,h[n]);
|$label(0,15,Times New Roman,$(d8$))$sub(h,n)$hinge()$in( = )$sub(h,0)$in( )$sup(3,n)$hinge()$in( + )$sup(3,n)$hinge()$in( - )1
(c9) /* Systems of homogeneous first order equations:
If you set DIFFERVERBOSE:TRUE, DIFFERENCEQ offers a narrative. */
differverbose:true$
(c10) eqn1:y[k+1]+z[k]-3*y[k]=0;
|$label(0,15,Times New Roman,$(d10$))$sub(y,k$in( + )1)$hinge()$in( + )$sub(z,k)$hinge()$in( - )3$in( )$sub(y,k)$hinge()$in( = )0
(c11) eqn2:3*y[k]+z[k+1]-5*z[k]=0;
|$label(0,15,Times New Roman,$(d11$))$sub(z,k$in( + )1)$hinge()$in( - )5$in( )$sub(z,k)$hinge()$in( + )3$in( )$sub(y,k)$hinge()$in( = )0
(c12) differenceq([eqn1,eqn2],[y[k],z[k]]);
|$label(0,15,Times New Roman,$(e12$))$sub(u,k)$hinge()$in( = )$matrix(1,2,$sub(y,k),$sub(z,k))
|$label(0,15,Times New Roman,$(e13$))$sub(u,0)$hinge()$in( = )$matrix(1,2,$sub(y,0),$sub(z,0))
|$label(0,15,Times New Roman,$(e14$))a$hinge()$in( = )$matrix(2,2,3,$in( - )1,$in( - )3,5)
|$label(0,15,Times New Roman,$(e15$))$sub(u,k$in( + )1)$hinge()$in( = )a$hinge()$in( )$sub(u,k)
|$label(0,15,Times New Roman,$(e16$))$sub(u,k)$hinge()$in( = )s$hinge()$in( . )$sup($greektext(l),k)$hinge()$in( . )$sup(s,- 1)$hinge()$in( . )$sub(u,0)
C:\MACSD2B\share\matsolve.fas being loaded.
C:\MACSD2B\share\blinalgl.fas being loaded.
|$label(0,15,Times New Roman,$(d16$))$matrix(1,2,$sub(y,k)$in( = )$q($sub(y,0)$in( )$paren($sup(6,k)$in( + )3$in( )$sup(2,k),$(,$)),4)$in( - )$q($sub(z,0)$in( )$paren($sup(6,k)$in( - )$sup(2,k),$(,$)),4),$sub(z,k)$in( = )$q($sub(z,0)$in( )$paren(3$in( )$sup(6,k)$in( + )$sup(2,k),$(,$)),4)$in( - )$q($sub(y,0)$in( )$paren(3$in( )$sup(6,k)$in( - )3$in( )$sup(2,k),$(,$)),4))
(c17) /* DIFFERENCEQ knows how to solve linear difference equations,
even when the associated matrix is not diagonalizable. */
eqn1:x[k+1]=7*x[k]+y[k]+2*z[k];
|$label(0,15,Times New Roman,$(d17$))$sub(x,k$in( + )1)$hinge()$in( = )2$in( )$sub(z,k)$hinge()$in( + )$sub(y,k)$hinge()$in( + )7$in( )$sub(x,k)
(c18) eqn2:y[k+1]=-x[k]+7*y[k];
|$label(0,15,Times New Roman,$(d18$))$sub(y,k$in( + )1)$hinge()$in( = )7$in( )$sub(y,k)$hinge()$in( - )$sub(x,k)
(c19) eqn3:z[k+1]=x[k]-y[k]+6*z[k];
|$label(0,15,Times New Roman,$(d19$))$sub(z,k$in( + )1)$hinge()$in( = )6$in( )$sub(z,k)$hinge()$in( - )$sub(y,k)$hinge()$in( + )$sub(x,k)
(c20) (differverbose:false,differenceq([eqn1,eqn2,eqn3],[x[k],y[k],z[k]]));
|$label(0,15,Times New Roman,$(d20$))$matrix(1,3,$sub(x,k)$in( = )$q($sub(z,0)$in( )$paren(3$in( )$sup(8,k)$in( + )$paren(k$in( - )3,$(,$))$in( )$sup(6,k),$(,$)),6)$in( + )$q($sub(x,0)$in( )$paren($sup(8,k)$in( + )$sup(6,k),$(,$)),2)$in( + )$q($sub(y,0)$in( )k$in( )$sup(6,k),6),$sub(y,k)$in( = )$in( - )$q($sub(z,0)$in( )$paren(3$in( )$sup(8,k)$in( + )$paren($in( - )k$in( - )3,$(,$))$in( )$sup(6,k),$(,$)),6)$in( - )$q($sub(x,0)$in( )$paren($sup(8,k)$in( - )$sup(6,k),$(,$)),2)$in( + )$q($sub(y,0)$in( )$paren(k$in( + )6,$(,$))$in( )$sup(6,k),6),$sub(z,k)$in( = )$q($sub(z,0)$in( )$paren(3$in( )$sup(8,k)$in( + )$paren(3$in( - )k,$(,$))$in( )$sup(6,k),$(,$)),6)$in( + )$q($sub(x,0)$in( )$paren($sup(8,k)$in( - )$sup(6,k),$(,$)),2)$in( - )$q($sub(y,0)$in( )k$in( )$sup(6,k),6))
(c21) /* It is also possible to specify initial conditions as an optional argument
to DIFFERENCEQ. */
ics:[x[0]=1,y[0]=2,z[0]=z0];
|$label(0,15,Times New Roman,$(d21$))$open([)$sub(x,0)$hinge()$in( = )1$ina($, )$hinge()$sub(y,0)$hinge()$in( = )2$ina($, )$hinge()$sub(z,0)$hinge()$in( = )z0$close(])
(c22) differenceq([eqn1,eqn2,eqn3],[x[k],y[k],z[k]],ics);
|$label(0,15,Times New Roman,$(d22$))$matrix(1,3,$sub(x,k)$in( = )$q($paren(3$in( )$sup(8,k)$in( + )$paren(k$in( - )3,$(,$))$in( )$sup(6,k),$(,$))$in( )z0,6)$in( + )$q($sup(8,k)$in( + )$sup(6,k),2)$in( + )$q(k$in( )$sup(6,k),3),$sub(y,k)$in( = )$in( - )$q($paren(3$in( )$sup(8,k)$in( + )$paren($in( - )k$in( - )3,$(,$))$in( )$sup(6,k),$(,$))$in( )z0,6)$in( - )$q($sup(8,k)$in( - )$sup(6,k),2)$in( + )$q($paren(k$in( + )6,$(,$))$in( )$sup(6,k),3),$sub(z,k)$in( = )$q($paren(3$in( )$sup(8,k)$in( + )$paren(3$in( - )k,$(,$))$in( )$sup(6,k),$(,$))$in( )z0,6)$in( + )$q($sup(8,k)$in( - )$sup(6,k),2)$in( - )$q(k$in( )$sup(6,k),3))
(c23) /* Second Order Equations */
y[k+2]-6*y[k+1]+8*y[k]=0;
|$label(0,15,Times New Roman,$(d23$))$sub(y,k$in( + )2)$hinge()$in( - )6$in( )$sub(y,k$in( + )1)$hinge()$in( + )8$in( )$sub(y,k)$hinge()$in( = )0
(c24) differenceq(%,y[k]);
|$label(0,15,Times New Roman,$(d24$))$sub(y,k)$hinge()$in( = )$q($sub(y,1)$in( )$paren($sup(4,k)$in( - )$sup(2,k),$(,$)),2)$hinge()$in( + )$sub(y,0)$in( )$paren(2$in( )$sup(2,k)$in( - )$sup(4,k),$(,$))
(c25) differverbose:false$
(c26) y[0]:3$
(c27) y[1]:2$
(c28) y[k+2]-6*y[k+1]+8*y[k]=0;
|$label(0,15,Times New Roman,$(d28$))$sub(y,k$in( + )2)$hinge()$in( - )6$in( )$sub(y,k$in( + )1)$hinge()$in( + )8$in( )$sub(y,k)$hinge()$in( = )0
(c29) differenceq(%,y[k]);
|$label(0,15,Times New Roman,$(d29$))$sub(y,k)$hinge()$in( = )$q($sub(y,1)$in( )$paren($sup(4,k)$in( - )$sup(2,k),$(,$)),2)$hinge()$in( + )$sub(y,0)$in( )$paren(2$in( )$sup(2,k)$in( - )$sup(4,k),$(,$))
(c30) part(%,2),k=5;
|$label(0,15,Times New Roman,$(d30$))$in( - )1888
(c31) /* Fibonacci Numbers: 1, 1, 2, 3, 5, 8, 13, 21, ... */
f[0]:1$
(c32) f[1]:1$
(c33) f[n+2]=f[n+1]+f[n];
|$label(0,15,Times New Roman,$(d33$))$sub(f,n$in( + )2)$hinge()$in( = )$sub(f,n$in( + )1)$hinge()$in( + )$sub(f,n)
(c34) differenceq(%,f[n]);
|$label(0,15,Times New Roman,$(d34$))$sub(f,n)$hinge()$in( = )$q($sub(f,0)$in( )$paren($sqrt(5)$in( )$paren($sup($paren(10$in( - )2$in( )$sqrt(5),$(,$)),n)$in( )$sup($paren($in( - )1,$(,$)),n)$in( - )$sup($paren(2$in( )$sqrt(5)$in( + )10,$(,$)),n),$(,$))$in( + )5$in( )$sup($paren(10$in( - )2$in( )$sqrt(5),$(,$)),n)$in( )$sup($paren($in( - )1,$(,$)),n)$in( + )5$in( )$sup($paren(2$in( )$sqrt(5)$in( + )10,$(,$)),n),$(,$)),10$in( )$sup(4,n)$in( )$sup(5,n$in(/)2))$hinge()$in( - )$q($sub(f,1)$in( )$paren($sup($paren(10$in( - )2$in( )$sqrt(5),$(,$)),n)$in( )$sup($paren($in( - )1,$(,$)),n)$in( - )$sup($paren(2$in( )$sqrt(5)$in( + )10,$(,$)),n),$(,$)),5$in( )$sup(5,n$in(/)2$in( - )1$in(/)2)$in( )$sup(4,n))
(c35) ratsimp(ev(part(%,2),n=7));
|$label(0,15,Times New Roman,$(d35$))21
(c36) /* Clean Up */
(remvalue(a,eqn1,eqn2,eqn3,ics),remarray(f,g,y))$